#!/bin/bash

# установочный скрипт для создания deb пакета проекта WebFormsQA

# для вывода информации на английском
export LANG=C

HOST_SVN_NAME=www.scale-tech.ru
PROJECT_NAME=WebFormsQA

WORK_DIR=$PROJECT_NAME
PROJECT_ADDR=http://$HOST_SVN_NAME/svn/WebFormsQA/branches/1.2

PACKAGE_DIR=deb
DEB_CONTROL_FILE=$PACKAGE_DIR/DEBIAN/control
WEB_PATH=/var/www
HOST_PATH=$PACKAGE_DIR$WEB_PATH/$PROJECT_NAME

# версия doxygen, которая будет собрана в случае отсутствия файла /usr/bin/doxygen
DOXYGEN_VER=doxygen-1.7.5.1

FILE_VERSION="$HOST_PATH/doc/doxygen/toc.h"
FILE_VERSION_ORIG="$HOST_PATH/doc/doxygen/toc-orig.h"



#************************************************************************************************
# HELP пример создания локального репозитория с собственными пакетами и его подключения к apt-get
#************************************************************************************************
# создаю каталог с репозиторием например в домашней папке и копирую в нее собственные deb пакета
# mkdir my-repos
# cd my-repos
# создаю описание каталога с пакетами
# dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
# добавляю в конфигурационный файл apt новый источник
# echo "deb file:///home/пользователь/my-repos/ ./" >> /etc/apt/sources.list
# обновляю список пакетов apt-get update
# устанавливаю собственный пакет apt-get insta имя_пакета


sudo apt-get install -y graphviz subversion
sudo apt-get install -y md5deep fakeroot




if [ ! -f "/usr/local/bin/doxygen" ]; then 

	###############################################################################################
	# сборка версии doxygen
	# так как в deb репозитории обычно достаточно старые версии, беру версию явно и собираю вручную
	###############################################################################################
	# svn co https://doxygen.svn.sourceforge.net/svnroot/doxygen/trunk doxygen-svn
	DOXYGEN_FULL=$DOXYGEN_VER.src.tar.gz
	
	sudo apt-get install -y tar wget g++ 
	sudo apt-get install -y flex bison
	
	wget http://ftp.stack.nl/pub/users/dimitri/$DOXYGEN_FULL
	tar xvfz $DOXYGEN_FULL
	cd $DOXYGEN_VER
	
	./configure
	make
	sudo make install
	cd ..
fi



##
# загружаю проет из svn, необходим ввод пароля (для X сервера вначале еще идет перенаправление на kwallet, который не использую)
svn co $PROJECT_ADDR $HOST_PATH
OLD_DIR=`pwd`





# определяю текущую версию, которая берется как версия в файле toc.h
# и номер ревизии из svn


# определяю основной номер версии ПО
# флаг -n отключает автоматический вывод sed, в этом случае в выходном потоке появятся только строки, задаваемые явной командой вывода р.
# нахожу строку с @version X.X Release и вырезаю 2 поле, разделителем является пробел
NUM_VERSION=`cat $FILE_VERSION | sed -n '/@version/p' | cut -d" " -f 2` 

# номер ревизии беру из svn 
NUM_REVISION=`svn info | sed -n "/Revision/p" | cut -d" " -f 2`

# полная версия определяется по номеру версии и ревизии
FULL_VERSION="$NUM_VERSION.$NUM_REVISION"


# сохраняю оригинальную версию
cp -f $FILE_VERSION $FILE_VERSION_ORIG
# для генерации документации меняю номер версии на полный
sed -i "s/@version.*Release/@version $FULL_VERSION/"  $FILE_VERSION
 

# запускаю генерацию документации
cd $HOST_PATH/doc
doxygen Doxyfile
cd $OLD_DIR

# в дистрибутив записываю версию файла как в репозитории
cp -f $FILE_VERSION_ORIG $FILE_VERSION 
rm -f $FILE_VERSION_ORIG



########################################################
### настройка конфигурации для сборки deb пакета
mkdir -p $PACKAGE_DIR/DEBIAN
cp -f DEBIAN/control $DEB_CONTROL_FILE

#вставляю полный номер версии
sed -i "s/FULL_VERSION/$FULL_VERSION/"  $DEB_CONTROL_FILE

# список изменяемых файлов при перезаписи которых будет получено предупреждение
# DEBIAN/conffiles


# список папок для создания
cat > $PACKAGE_DIR/DEBIAN/dirs << EOF
$WEB_PATH/$PROJECT_NAME
EOF

# список контрольных сумм файлов
md5deep -r $PACKAGE_DIR  > $PACKAGE_DIR/DEBIAN/md5sums


# скрипт выполняющийся после установки пакета
cat > $PACKAGE_DIR/DEBIAN/postinst << EOF2
#!/bin/bash

chown -R www-data:www-data $WEB_PATH
chmod 750 -R $WEB_PATH

EOF2

chmod 755 $PACKAGE_DIR/DEBIAN/postinst



# сборка дистрибутива
dpkg --build "$PACKAGE_DIR" "$PROJECT_NAME-$FULL_VERSION.deb"









